

//组合当中的类离开可以单独存在
//实例内部类离开没有意义
//静态内部类与外部类没有关系，相当于一个挂件



interface IA {
    void func();
}
public class Test {


    //1.内部类
    //（1）静态内部类
    //（2）非静态内部类、实例内部类
    //（3）局部内部类
    //（4）匿名内部类
    //实例化静态内部类：OuterClass.InnerClass innerClass=new OuterClass.InnerClass();//不依赖于对象，依赖于类

    //3.静态内部类中不能直接访问外部类的非静态成员
    //4.在实例内部类中，不能定义静态的成员变量，非要定义使用static final
    //实例化实例内部类：OuterClass2 outerClass2=new OuterClass2();
    //              OuterClass2.InnerClass innerClass2=outerClass2.new InnerClass2();//依赖于对象
    //如果同名就近原则，非要访问外部类中使用OuterClass.this.成员


    //实例内部类
   public class InnerClass1{
        public int data4;
        private int data5;
        public  static final int DATA=6;
    }

    //静态内部类
    public static class InnerClass2 {
        public int data7;
        private int data8;
        public static int DATA = 9;
    }

    public void test() {

    }

}
